package com.etone.smartAudit.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.etone.smartAudit.domain.TaskExec;
import com.etone.smartAudit.enums.CheckState;
import com.etone.smartAudit.vo.task.TaskExecVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author: sovy
 * @date: 2020/7/30
 * @description:
 */
@Mapper
public interface TaskExecMapper extends BaseMapper<TaskExec> {

    /**
     * 查找任务执行人
     *
     * @param taskId
     * @return
     */
    List<TaskExec> findByTaskId(@Param("taskId") Integer taskId);

    /**
     * 根据任务id删除执行人
     *
     * @param taskId
     * @return
     */
    int deleteByTaskId(@Param("taskId") Integer taskId);

    /**
     * 批量更新插入执行人
     *
     * @param taskExecs
     * @return
     */
    int batchInsert(@Param("taskExecs") List<TaskExec> taskExecs);

    /**
     * 更新执行状态
     *
     * @param taskId
     * @param adminId
     * @return
     */
    int updateOverState(@Param("taskId") Integer taskId, @Param("adminId") Integer adminId, @Param("state") CheckState state);

    /**
     * 检查任务是否执行完成
     *
     * @param taskId
     * @return
     */
    boolean checkTaskExecOver(Integer taskId);

    /**
     * 任务执行记录
     *
     * @param taskId
     * @return
     */
    List<TaskExecVO> findList(@Param("taskId") Integer taskId);

    /**
     * 任务开始
     *
     * @param taskId
     * @param adminId
     * @return
     */
    int taskExecStart(@Param("taskId") Integer taskId, @Param("adminId") Integer adminId);


    /**
     * 完成任务
     *
     * @param taskId
     * @param adminId
     * @param realDayCnt
     * @param file
     * @param extendInfo
     * @param checkState
     * @return
     */
    int taskExecEnd(@Param("taskId") Integer taskId, @Param("adminId") Integer adminId, @Param("realDayCnt") Double realDayCnt, @Param("file") String file, @Param("extendInfo") String extendInfo, @Param("checkState") CheckState checkState);

    /**
     * 执行驳回
     *
     * @param taskId
     * @return
     */
    int taskExecReject(@Param("taskId") Integer taskId);
}
